package com.lk.sys.controller;

import com.lk.sys.common.vo.CheckBox;
import com.lk.sys.common.vo.JsonResult;
import com.lk.sys.common.vo.PageObject;
import com.lk.sys.entity.SysRole;
import com.lk.sys.service.SysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/*
 * 本模块通过业务层对象执行业务逻辑，再通过VO对象封装响应结果(主要对业务层数据添加状态信息)，
 * 最后将响应结果转换为JSON格式的字符串响应到客户端。
 * @author Lukang
 * @date 2021/12/7 下午9:15
 */
@RequestMapping("/role/")
@RestController
public class SysRoleController {

    @Autowired
    private SysRoleService sysRoleService;

    @RequestMapping("doFindRoles")
    public JsonResult doFindRoles(){
        List<CheckBox> roles = sysRoleService.findRoles();
        return new JsonResult(roles);
    }
    /**
     * 更新角色信息
     * @author Lukang
     * @date 2021/12/16 下午9:46
     * @param entity
     * @param menuIds
     * @return com.lk.sys.common.vo.JsonResult
     */
    @RequestMapping("doUpdateObject")
    public JsonResult updateObjects(SysRole entity, Integer[] menuIds) {
        sysRoleService.updateObject(entity, menuIds);
        return new JsonResult("update ok");
    }

    /**
     * 通过角色id查询角色信息及角色对应的菜单id，封装到SysRoleMenuVo中
     * @author Lukang
     * @date 2021/12/22 下午9:16
     * @param id
     * @return com.lk.sys.common.vo.JsonResult
     */
    @RequestMapping("doFindObjectById")
    public JsonResult findRoleMenuById(Integer id) {
        return new JsonResult(sysRoleService.findObjectByRoleId(id));
    }

    /**
     * 添加角色，存储角色本身信息和角色菜单关系信息
     * @author Lukang
     * @date 2021/12/16 下午9:46
     * @param entity
     * @param menuIds
     * @return com.lk.sys.common.vo.JsonResult
     */
    @RequestMapping("doSaveObject")
    public JsonResult saveObjects(SysRole entity, Integer[] menuIds) {
        sysRoleService.saveObject(entity, menuIds);
        return new JsonResult("save ok");
    }

    /**
     * 角色界面数据显示
     * @author Lukang
     * @date 2021/12/7 下午9:16
     */

    @RequestMapping("doFindPageObjects")
    public JsonResult findPageObjects(String name, Long pageCurrent) {
        PageObject<SysRole> pageObjects = sysRoleService.findPageObjects(name, pageCurrent);
        return new JsonResult(pageObjects);
    }

    /**
     * 基于角色id删除角色数据
     * @author Lukang
     * @date 2021/12/8 下午10:11
     * @param id
     * @return com.lk.sys.common.vo.JsonResult
     */
    @RequestMapping("doDeleteObject")
    public JsonResult deleteObject(Integer id){
        return new JsonResult(sysRoleService.deleteObjectById(id));
    }
}
